<HTML
><HEAD
><TITLE
>Two kinds of devices</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.63
"><LINK
REL="HOME"
TITLE="The Linux System Administrator's Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Using Disks and Other Storage Media"
HREF="c955.html"><LINK
REL="PREVIOUS"
TITLE="Using Disks and Other Storage Media"
HREF="c955.html"><LINK
REL="NEXT"
TITLE="Hard disks"
HREF="x1001.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Linux System Administrator's Guide: Version 0.7</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c955.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Using Disks and Other Storage Media</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1001.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN975"
>6.1. Two kinds of devices</A
></H1
><P
>UNIX, and therefore Linux, recognises two different
	kinds of device: random-access block devices (such as disks), and
	character devices (such as tapes and serial lines), some of which
	may be serial, and some random-access.  Each supported device is
	represented in the filesystem as a <I
CLASS="GLOSSTERM"
>device
	file</I
>.  When you read or write a device file, the data
	comes from or goes to the device it represents.  This way no special
	programs (and no special application programming methodology, such
	as catching interrupts or polling a serial port) are necessary to
	access devices; for example, to send a file to the printer, one
	could just say

<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>$</TT
> <TT
CLASS="USERINPUT"
><B
>cat filename &#62; /dev/lp1</B
></TT
>
<TT
CLASS="PROMPT"
>$</TT
></PRE
></FONT
></TD
></TR
></TABLE
>

	and the contents of the file are printed (the file must, of course,
	be in a form that the printer understands).  However, since it is
	not a good idea to have several people cat their files to the
	printer at the same time, one usually uses a special program to send
	the files to be printed (usually <B
CLASS="COMMAND"
>lpr</B
>). This
	program makes sure that only one file is being printed at a time,
	and will automatically send files to the printer as soon as it
	finishes with the previous file.  Something similar is needed for
	most devices.  In fact, one seldom needs to worry
	about device files at all.</P
><P
>Since devices show up as files in the filesystem (in the
	<TT
CLASS="FILENAME"
>/dev</TT
> directory), it is easy to see just what
	device files exist, using <B
CLASS="COMMAND"
>ls</B
> or another suitable
	command.  In the output of <B
CLASS="COMMAND"
>ls -l</B
>, the first
	column contains the type of the file and its permissions.  For
	example, inspecting a serial device might give

<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>$</TT
> <TT
CLASS="USERINPUT"
><B
>ls -l /dev/ttyS0</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>crw-rw-r--    1 root     dialout    4,  64 Aug 19 18:56 /dev/ttyS0</TT
>
<TT
CLASS="PROMPT"
>$</TT
></PRE
></FONT
></TD
></TR
></TABLE
>

	The first character in the first column, i.e.,
	`<TT
CLASS="LITERAL"
>c</TT
>' in <TT
CLASS="LITERAL"
>crw-rw-rw-</TT
> above, tells
	an informed user the type of the file, in this case a character
	device.  For ordinary files, the first character is
	`<TT
CLASS="LITERAL"
>-</TT
>', for directories it is
	`<TT
CLASS="LITERAL"
>d</TT
>', and for block devices
	`<TT
CLASS="LITERAL"
>b</TT
>'; see the <B
CLASS="COMMAND"
>ls</B
> man page
	for further information.</P
><P
>Note that usually all device files exist even though the
	device itself might be not be installed.  So just because you have a
	file <TT
CLASS="FILENAME"
>/dev/sda</TT
>, it doesn't mean that you really
	do have an SCSI hard disk.  Having all the device files makes the
	installation programs simpler, and makes it easier to add new
	hardware (there is no need to find out the correct parameters
	for and create the device files for the new device).</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c955.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1001.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Using Disks and Other Storage Media</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c955.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Hard disks</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>